package com.ssy.lingxi.settle.accounts.model.vo.response;

import com.ssy.lingxi.settle.accounts.model.vo.request.ApplyAmountRowWriteOffRecordSaveVO;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 请款单行详情VO
 * @author Saske
 * @date 2021/12/21
 * @version 2.0.0
 */
public class ApplyAmountRowDetailVO implements Serializable {

    private static final long serialVersionUID = -910013342812L;

    /**
     * ID
     */
    private Long id;

    /**
     * 来源合同id
     */
    private Long sourceContractId;

    /**
     * 请款单编号
     */
    private String applyNo;

    /**
     * 单据id
     */
    private Long billId;

    /**
     * 单据编号
     */
    private String billNo;

    /**
     * 单据摘要
     */
    private String billAbstract;

    /**
     * 单据类型
     * 定义: ApplyAmountRowBillTypeEnum
     */
    private Integer billType;

    /**
     * 单据类型名称
     */
    private String billTypeName;

    /**
     * 单据时间
     */
    private String billTime;

    /**
     * 单据状态,定义在ApplyAmountRowStatusEnum中
     */
    private String billStatus;

    /**
     * 请款单状态，定义在ApplyAmountStatusEnum中
     */
    private String status;

    /**
     * 单据金额
     */
    private BigDecimal billAmount;

    /**
     * 单据行金额
     */
    private BigDecimal billRowAmount;

    /**
     * 是否含税
     */
    private Integer hasTax;

    /**
     * 是否含税中文
     */
    private String hasTaxName;

    /**
     * 税率（百分比的分子部分）
     */
    private BigDecimal taxRate;

    /**
     * 已付款
     */
    private BigDecimal paid;

    /**
     * 已请款待付款
     */
    private BigDecimal appliedUnpaid;

    /**
     * 对账金额
     */
    private BigDecimal reconciliationAmount;

    /**
     * 请款金额
     */
    private BigDecimal applyPayment;

    /**
     * 核销金额
     */
    private BigDecimal writeOffAmount;

    /**
     * 核销记录
     */
    private List<ApplyAmountRowWriteOffRecordSaveVO> writeOffRecords;

    /**
     * 可核销金额
     */
    private BigDecimal canWriteOffAmount;

    /**
     * 可以核销标识
     */
    private Boolean canWriteOffFlag;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getSourceContractId() {
        return sourceContractId;
    }

    public void setSourceContractId(Long sourceContractId) {
        this.sourceContractId = sourceContractId;
    }

    public String getApplyNo() {
        return applyNo;
    }

    public void setApplyNo(String applyNo) {
        this.applyNo = applyNo;
    }

    public Long getBillId() {
        return billId;
    }

    public void setBillId(Long billId) {
        this.billId = billId;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getBillAbstract() {
        return billAbstract;
    }

    public void setBillAbstract(String billAbstract) {
        this.billAbstract = billAbstract;
    }

    public Integer getBillType() {
        return billType;
    }

    public void setBillType(Integer billType) {
        this.billType = billType;
    }

    public String getBillTypeName() {
        return billTypeName;
    }

    public void setBillTypeName(String billTypeName) {
        this.billTypeName = billTypeName;
    }

    public String getBillTime() {
        return billTime;
    }

    public void setBillTime(String billTime) {
        this.billTime = billTime;
    }

    public String getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(String billStatus) {
        this.billStatus = billStatus;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public BigDecimal getBillAmount() {
        return billAmount;
    }

    public void setBillAmount(BigDecimal billAmount) {
        this.billAmount = billAmount;
    }

    public Integer getHasTax() {
        return hasTax;
    }

    public void setHasTax(Integer hasTax) {
        this.hasTax = hasTax;
    }

    public String getHasTaxName() {
        return hasTaxName;
    }

    public void setHasTaxName(String hasTaxName) {
        this.hasTaxName = hasTaxName;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }

    public BigDecimal getPaid() {
        return paid;
    }

    public void setPaid(BigDecimal paid) {
        this.paid = paid;
    }

    public BigDecimal getAppliedUnpaid() {
        return appliedUnpaid;
    }

    public void setAppliedUnpaid(BigDecimal appliedUnpaid) {
        this.appliedUnpaid = appliedUnpaid;
    }

    public BigDecimal getReconciliationAmount() {
        return reconciliationAmount;
    }

    public void setReconciliationAmount(BigDecimal reconciliationAmount) {
        this.reconciliationAmount = reconciliationAmount;
    }

    public BigDecimal getApplyPayment() {
        return applyPayment;
    }

    public void setApplyPayment(BigDecimal applyPayment) {
        this.applyPayment = applyPayment;
    }

    public BigDecimal getWriteOffAmount() {
        return writeOffAmount;
    }

    public void setWriteOffAmount(BigDecimal writeOffAmount) {
        this.writeOffAmount = writeOffAmount;
    }

    public List<ApplyAmountRowWriteOffRecordSaveVO> getWriteOffRecords() {
        return writeOffRecords;
    }

    public void setWriteOffRecords(List<ApplyAmountRowWriteOffRecordSaveVO> writeOffRecords) {
        this.writeOffRecords = writeOffRecords;
    }

    public BigDecimal getCanWriteOffAmount() {
        return canWriteOffAmount;
    }

    public void setCanWriteOffAmount(BigDecimal canWriteOffAmount) {
        this.canWriteOffAmount = canWriteOffAmount;
    }

    public BigDecimal getBillRowAmount() {
        return billRowAmount;
    }

    public void setBillRowAmount(BigDecimal billRowAmount) {
        this.billRowAmount = billRowAmount;
    }

    public Boolean getCanWriteOffFlag() {
        return canWriteOffFlag;
    }

    public void setCanWriteOffFlag(Boolean canWriteOffFlag) {
        this.canWriteOffFlag = canWriteOffFlag;
    }
}
